#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "srttranslator.h"
#include <QScrollBar>
#include <QTabWidget>
#include "llamaServerManager.h"
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
class QLineEdit;
class QTextEdit;
class QPushButton;
class QPlainTextEdit;
class QCheckBox;
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    // UI初始化方法
    void initUI();
    void createSettingsTab();    // 新增：创建设置标签页
    void createTranslationTab(); // 新增：创建翻译标签页
    // 测试API连接
    void testApiConnection();
    // 选择字幕文件
    void selectSrtFile();
    // 开始翻译
    void startTranslate();
    // 更新日志显示
    void updateLog(const QString& log);
    // 加载设置
    void loadSettings();
    // 保存设置
    void saveSettings();

    // 新增：恢复默认设置按钮
    QPushButton* m_resetButton;

    // 新增：设置默认值的函数
    void setDefaultValues();

private:
    // UI控件
    QLineEdit* m_apiKeyEdit;      // API密钥输入框
    QLineEdit* m_urlEdit;         // URL输入框
    QLineEdit* m_modelEdit;       // 模型选择输入框
    QPushButton* m_testButton;    // 测试按钮
    QLineEdit* m_testResult;      // 测试结果显示
    
    QLineEdit* m_srtPathEdit;     // 字幕文件路径输入框
    QPushButton* m_selectButton;  // 选择文件按钮
    
    QTextEdit* m_originalText;    // 原文显示
    QTextEdit* m_translatedText;  // 译文显示
    
    QPushButton* m_translateButton; // 翻译按钮
    QPushButton* m_editPromptButton; // 编辑提示按钮
    QPlainTextEdit* m_logText;      // 日志显示控件
    QCheckBox* m_keepHistoryCheck;  // 新增：是否保留历史选项

    QTabWidget* m_tabWidget;     // 新增：标签页控件

    // 翻译器实例
    SrtTranslator m_translator;
    
    // 设置文件路径
    QString m_settingsPath;

    QCheckBox* m_useLocalAICheck;    // 使用本地AI服务复选框
    QLineEdit* m_modelPathEdit;      // 模型路径输入框
    QLineEdit* m_hostEdit;           // 主机地址输入框
    QLineEdit* m_portEdit;           // 端口输入框
    QLineEdit* m_tempEdit;           // 温度参数输入框
    QLineEdit* m_contextSizeEdit;    // 上下文大小输入框
    QLineEdit* m_nglEdit;            // ngl参数输入框

    // 添加LlamaServerManager实例
    LlamaServerManager m_llamaServer;

    QPushButton* m_selectModelButton;    // 新增：选择模型文件按钮

    QTimer* m_checkServerTimer;  // 添加定时器成员

private slots:
    void onLocalAIToggled(bool checked);
    void selectModelFile();              // 新增：选择模型文件的槽函数
};

#endif // MAINWINDOW_H
